package beans;

import com.google.api.translate.Language;
import com.google.api.translate.Translate;

public class BeanTrans {
	private String par_idiomas;
	private String texto;
	private String leng_origen = "";
	private String leng_destino = "";

	public BeanTrans() {
		par_idiomas = null;
		texto = null;
	}

	public String getPar_idiomas() {
		return par_idiomas;
	}

	public String getTexto() {
		return texto;
	}

	public void setPar_idiomas(String par_idi) {
		par_idiomas = par_idi;
	}

	public void setTexto(String txt) {
		texto = txt;
	}

	public String getTexto_traducido() {
		String texto_traducido = "";
		try {
			texto_traducido = traduce(texto, par_idiomas);
		} catch (Exception e) {
			System.out.println("ERROR al traducir: ");
		}
		return texto_traducido;
	}

	public String traduce(String texto, String par_idiomas) throws Exception {
		String txt_traducido = "";
		obtieneLenguajes(par_idiomas);
		if (texto.length() == 0)
			throw new NullPointerException(
					"El texto a traducir es vac&iacute;o. Por favor, escriba un texto.");
		try {
			txt_traducido = Translate.translate(texto, leng_origen,
					leng_destino);
		} catch (Exception e) {
			throw new Exception("Error en el servicio web de traduci�n: "
					+ e.toString());
		}
		return txt_traducido;
	}

	private void obtieneLenguajes(String pareja_leng) {
		// Espa�ol
		if (pareja_leng.equals("es_en")) {
			leng_origen = Language.SPANISH;
			leng_destino = Language.ENGLISH;
		}
		if (pareja_leng.equals("es_fr")) {
			leng_origen = Language.SPANISH;
			leng_destino = Language.FRENCH;
		}
		if (pareja_leng.equals("es_ge")) {
			leng_origen = Language.SPANISH;
			leng_destino = Language.GERMAN;
		}
		/*
		 * NO DISPONIBLE EN LA API if(pareja_leng.equals("es_pt")) { leng_origen =
		 * Language.SPANISH; leng_destino = Language.PORTUGESE; }
		 */

		if (pareja_leng.equals("es_it")) {
			leng_origen = Language.SPANISH;
			leng_destino = Language.ITALIAN;
		}
		// Ingles
		if (pareja_leng.equals("en_es")) {
			leng_origen = Language.ENGLISH;
			leng_destino = Language.SPANISH;
		}
		if (pareja_leng.equals("en_fr")) {
			leng_origen = Language.ENGLISH;
			leng_destino = Language.FRENCH;
		}
		if (pareja_leng.equals("en_ge")) {
			leng_origen = Language.ENGLISH;
			leng_destino = Language.GERMAN;
		}

		if (pareja_leng.equals("en_pt")) {
			leng_origen = Language.ENGLISH;
			leng_destino = Language.PORTUGESE;
		}

		if (pareja_leng.equals("en_it")) {
			leng_origen = Language.ENGLISH;
			leng_destino = Language.ITALIAN;
		}

		// Aleman
		if (pareja_leng.equals("ge_es")) {
			leng_origen = Language.GERMAN;
			leng_destino = Language.SPANISH;
		}
		if (pareja_leng.equals("ge_fr")) {
			leng_origen = Language.GERMAN;
			leng_destino = Language.FRENCH;
		}
		if (pareja_leng.equals("ge_en")) {
			leng_origen = Language.GERMAN;
			leng_destino = Language.ENGLISH;
		}

		if (pareja_leng.equals("ge_pt")) {
			leng_origen = Language.GERMAN;
			leng_destino = Language.PORTUGESE;
		}

		if (pareja_leng.equals("ge_it")) {
			leng_origen = Language.GERMAN;
			leng_destino = Language.ITALIAN;
		}

		// Frances
		if (pareja_leng.equals("fr_es")) {
			leng_origen = Language.FRENCH;
			leng_destino = Language.SPANISH;
		}
		if (pareja_leng.equals("fr_en")) {
			leng_origen = Language.FRENCH;
			leng_destino = Language.ENGLISH;
		}
		if (pareja_leng.equals("fr_ge")) {
			leng_origen = Language.FRENCH;
			leng_destino = Language.GERMAN;
		}

		if (pareja_leng.equals("fr_pt")) {
			leng_origen = Language.FRENCH;
			leng_destino = Language.PORTUGESE;
		}

		if (pareja_leng.equals("fr_it")) {
			leng_origen = Language.FRENCH;
			leng_destino = Language.ITALIAN;
		}

		// Portugues
		if (pareja_leng.equals("pt_es")) {
			leng_origen = Language.PORTUGESE;
			leng_destino = Language.SPANISH;
		}
		if (pareja_leng.equals("pt_fr")) {
			leng_origen = Language.PORTUGESE;
			leng_destino = Language.FRENCH;
		}
		if (pareja_leng.equals("pt_ge")) {
			leng_origen = Language.PORTUGESE;
			leng_destino = Language.GERMAN;
		}

		if (pareja_leng.equals("pt_en")) {
			leng_origen = Language.PORTUGESE;
			leng_destino = Language.ENGLISH;
		}

		if (pareja_leng.equals("pt_it")) {
			leng_origen = Language.PORTUGESE;
			leng_destino = Language.ITALIAN;
		}

		// Italiano
		if (pareja_leng.equals("it_es")) {
			leng_origen = Language.ITALIAN;
			leng_destino = Language.SPANISH;
		}
		if (pareja_leng.equals("it_en")) {
			leng_origen = Language.ITALIAN;
			leng_destino = Language.ENGLISH;
		}
		if (pareja_leng.equals("it_fr")) {
			leng_origen = Language.ITALIAN;
			leng_destino = Language.FRENCH;
		}
		if (pareja_leng.equals("it_ge")) {
			leng_origen = Language.ITALIAN;
			leng_destino = Language.GERMAN;
		}

		if (pareja_leng.equals("it_pt")) {
			leng_origen = Language.ITALIAN;
			leng_destino = Language.PORTUGESE;
		}
	}
}
